#ifndef SERIALPORTWIDEGET_H
#define SERIALPORTWIDEGET_H

#include <QDialog>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include "mythread.h"
#include "runthread.h"
#include <QMessageBox>

namespace Ui {
class serialPortWideget;
}

class serialPortWideget : public QDialog
{
    Q_OBJECT

public:
    explicit serialPortWideget(QDialog *parent = nullptr);
    ~serialPortWideget();

    /** 将所填写的检测时间time赋值给detectionTime
    *
    *  @param:  time 填写的检测时间
    *  @return: void
    *  @note:  向线程传入所填写的检测时间time
    *  @see:
    */
    void setDetectionTime(double time);

private:
    Ui::serialPortWideget *ui;

    QThread *t,*tTwo;
    MyThread *mythreadOne,*mythreadTwo;
    QString constPortName,constPortNameLeft;


    runThread *searchedPort;

    double detectionTime;



private slots:

    /** 获得所有串口portList ; private槽函数
    *
    *  @param:  portList 当前电脑的串口列表
    *  @return: void
    *  @note:  获得所有串口portList
    *  @see:
    */
    void getPortList(QStringList portList);

public slots:

    /** 右脚线程开启 ; public槽函数
    *
    *  @param:  void
    *  @return: void
    *  @note:  右脚线程开启
    *  @see:
    */
    void threadSetting();

    /** 左脚线程开启 ; public槽函数
    *
    *  @param:  void
    *  @return: void
    *  @note:  左脚线程开启
    *  @see:
    */
    void leftThreadSetting();





signals:
    /** 发送选择的右脚port名称portName以及所填写的右脚检测时间time的信号
    *
    *  @param:  portName    所选择的port名称
    *  @param:  time        所填写的检测时间
    *  @return: void
    *  @note:  发送选择的右脚port名称portName以及所填写的右脚检测时间time的信号
    *  @see:
    */
    void emitPortInfo(QString portName,double time);

    /** 发送选择的左脚port名称portName以及所填写的左脚检测时间time的信号
    *
    *  @param:  portName    所选择的port名称
    *  @param:  time        所填写的检测时间
    *  @return: void
    *  @note:  发送选择的左脚port名称portName以及所填写的左脚检测时间time的信号
    *  @see:
    */
    void emitPortLeftInfo(QString portName,double time);

    /** 发送右脚数据传输关闭的信号
    *
    *  @param:  void
    *  @return: void
    *  @note:  发送右脚数据传输关闭的信号
    *  @see:
    */
    void emitCloseRight();

    /** 发送左脚数据传输关闭的信号
    *
    *  @param:  void
    *  @return: void
    *  @note:  发送左脚数据传输关闭的信号
    *  @see:
    */
    void emitCloseLeft();





};

#endif // SERIALPORTWIDEGET_H
